import time
from wxautox import WeChat
import main_Img
import main_RegExp
import main_Request

# python版本 3.11.9
# 包文件要求 安装 在pytho311/script文件夹下
# pip install wxauto -i https://pypi.tuna.tsinghua.edu.cn/simple
# pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple
# pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
# pip install  Pillow -i https://pypi.tuna.tsinghua.edu.cn/simple
# pip install pillow==9.5.0 -i https://pypi.tuna.tsinghua.edu.cn/simple  # 这是一个示例版本号，请根据实际情况调整

# 微信版本号 微信3.9.11.17版本
# 下载地址：https://github.com/cluic/wxauto

# 打包
# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller #清华源
# Pyinstaller -F py_word.py 可执行文件名exe
# pyinstaller --onefile main.py                 #生成一个文件
# pyinstaller --onefile --noconsole main.py     #不生成控制台

print(' APP启动 成功')
wx = WeChat()
print(f'微信版本号:{wx.VERSION}')  # 输出当前 wxauto 版本

#=============================================================================================

# listen_person = '@大哥的小号'
listen_person = "@雄猫充值助手"

group_list = [
    '千川【正纯】【新流】渠道',
    # '杭州伊景',
    'erp充值测试群'
    # '展望未来'
]

#=============================================================================================
map_list = {
    '千川【正纯】【新流】渠道': 13749,
    '杭州伊景': 14615,
    'erp充值测试群': 13487,
    '展望未来': 13487
}

for obj in group_list:
    wx.AddListenChat(who=obj, savepic=False, savefile=False, savevoice=False)

while True:  # 监听群消息
    msgs = wx.GetListenMessage()
    for chat in msgs:
        who = chat.who  # 获取聊天窗口名（人或群名）
        print(f'-----0X-监控对象-{who}--')
        one_msgs = msgs.get(chat)  # 获取消息内容
        print(f'-----1X-监控消息-{one_msgs}--')

        # 回复收到
        for msg in one_msgs:
            print(f'-----2X-监控内容-{msg}--')
            # 获取消息类型  "Self" 自己发的 'friend' 其他人发的 'recall'撤回消息 'time' 时间消息
            if msg.type == 'friend':
                try:
                    # wx.Search(keyword = 'my friend\'s ID')   查找微信好友或关键词，只要在keyword里填写想要查找的关键词或者好友名称即可。查找的名称最好完整匹配，不完全匹配只会选取搜索框第一个
                    # ===================================================
                    # print(f'----1A-内容-{msg.content}')
                    # print(f'----2A-发送-{msg.sender}')
                    # print(f'----3A-类型-{msg.type}')
                    # print(f'----4A-备注-{msg.sender_remark}')
                    # print(f'----5A-原始-{msg.info}')
                    # ===================================================
                    contentStr = msg.content.strip()    # 获取消息内容，字符串类型的消息内容
                    txtArr = contentStr.split()         # 内容拆分成 @机器人 和 发送的内容
                    sender = msg.sender                 # 发送人

                    if len(txtArr) > 1:
                        # 检查数组中是否包含至少一个首字母为 '@' 的字符串 结果为这个数组
                        # at_person = list(filter(lambda s: s.startswith('@'), txtArr))
                        # @助手
                        if contentStr.startswith(listen_person):
                            # 在 数组取 at 人字符串
                            # person = at_person[0].strip()  # 去尾部空串
                            # if person == listen_person:  # 如果 @人 是目标对象
                            # print("进入person-in", person)
                            msgStr = contentStr.replace(listen_person, '').strip()  # 整个文本删除 @人 剩下 消息内容  并去尾部空串
                            # print(f"@指定人员{+txtArr[0]} -- 消息列表{txtArr[1]}")
                            print(f"------------------消息内容[{msgStr}]")
                            print(f"-------------------@指定人[{listen_person}]")
                            print(f"--------------------发送人[{sender}]")
                            print(f"--------------------聊天群[{who}]")

                            result, msg, dictVal = main_RegExp.split_account(msgStr, map_list[who], sender)
                            if not result:
                                wx.SendMsg(msg=msg, who=who, at=sender)
                            else:
                                # 发送带参数的 GET 请求
                                res = main_Request.request_post('Test', dictVal, dictVal['account'], (listen_person == "@雄猫充值助手"))
                                if res.get('code'):
                                    sendSuccess = res.get('data')
                                    # request 请求返回结果
                                    datetime = sendSuccess.get('dateTime')
                                    account = sendSuccess.get('account')
                                    account_name = sendSuccess.get('account_name')
                                    cash = sendSuccess.get('cash')
                                    sendText = f"您在{datetime}发起充值成功\nAID:{account}\n账户名称:{account_name}\n业务订单号:{sendSuccess.get('orderId')}\n充值现金:{'{:.2f}'.format(sendSuccess.get('balanceDeductionPrice'))}\n充值金额(巨量币):{'{:.2f}'.format(cash)}"
                                    wx.SendMsg(msg=sendText, who=who, at=sender)
                                    temImg = main_Img.draw_success(sendSuccess.get('agent_name'),
                                                                   sendSuccess.get('agent_aid'),
                                                                   account_name,
                                                                   account,
                                                                   cash,
                                                                   datetime)
                                    imgFile = f'{map_list[who]}Ok.png'
                                    temImg.save(imgFile)
                                    time.sleep(1)
                                    wx.SendFiles(filepath=imgFile, who=who)
                                else:
                                    sendText = res.get('msg')
                                    wx.SendMsg(msg=sendText, who=who, at=sender)

                except Exception as e:
                    wx.SendMsg(msg=f"对不起,思想开小差了,我先休息一小会\n{e}", who=who, at=msg.sender)
                    print(f'===================系统异常{e}==================')
                    # input("Press Enter to exit")
    time.sleep(2)
